package cn.seaboot.admin.user.bean;


import io.swagger.v3.oas.annotations.media.Schema;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * POJO
 * 系统菜单 [t_sys_menu]
 * <p>
 *
 * @author Mr.css on  2019-03-25 11:40
 */
@Schema(description = "系统菜单 [t_sys_menu] 实体类")
public class Menu implements Serializable {
    private static final long serialVersionUID = 4700105779736181352L;

    /**
     * ID
     */
    @NotNull()
    @Schema(description = "ID")
    private String id;
    /**
     * 父级ID
     */
    @Schema(description = "父级ID")
    private String pid;
    /**
     * 路径
     */
    @Size(max = 64)
    @Schema(description = "路径")
    private String path;
    /**
     * 层级
     */
    @Schema(description = "层级")
    private Integer level;
    /**
     * 菜单标题
     */
    @Size(max = 64)
    @Schema(description = "菜单标题")
    private String title;
    /**
     * 菜单图标
     */
    @Size(max = 64)
    @Schema(description = "菜单图标")
    private String icon;
    /**
     * 描述
     */
    @Size(max = 64)
    @Schema(description = "描述")
    private String description;
    /**
     * 菜单类型
     */
    @Size(max = 32)
    @Schema(description = "菜单类型")
    private String type;
    /**
     * 超链接
     */
    @Size(max = 200)
    @Schema(description = "超链接")
    private String src;
    /**
     * 排序
     */
    @Schema(description = "排序")
    private Integer orderBy;
    /**
     * 权限编码
     */
    @Size(max = 64)
    @Schema(description = "权限编码")
    private String authorityCode;
    /**
     * 菜单组别，方便程序员从更多维度思考系统的设计，
     * 比如：系统存在多客户端的情况下，希望后台管理所有的菜单栏
     */
    @Size(max = 64)
    @Schema(description = "组别")
    private String groupName;
    /**
     * 是否可编辑
     */
    @NotNull
    @Schema(description = "是否可编辑")
    private Boolean editable;
    /**
     * 是否禁用
     */
    @NotNull
    @Schema(description = "是否禁用")
    private Boolean disabled;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPid() {
        return pid;
    }

    public void setPid(String pid) {
        this.pid = pid;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getSrc() {
        return src;
    }

    public void setSrc(String src) {
        this.src = src;
    }

    public Integer getOrderBy() {
        return orderBy;
    }

    public void setOrderBy(Integer orderBy) {
        this.orderBy = orderBy;
    }

    public String getAuthorityCode() {
        return authorityCode;
    }

    public void setAuthorityCode(String authorityCode) {
        this.authorityCode = authorityCode;
    }

    public Boolean getEditable() {
        return editable;
    }

    public void setEditable(Boolean editable) {
        this.editable = editable;
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    public Boolean getDisabled() {
        return disabled;
    }

    public void setDisabled(Boolean disabled) {
        this.disabled = disabled;
    }

    @Override
    public String toString() {
        return "Menu{" +
                "id='" + id + '\'' +
                ", pid='" + pid + '\'' +
                ", path='" + path + '\'' +
                ", level=" + level +
                ", title='" + title + '\'' +
                ", icon='" + icon + '\'' +
                ", description='" + description + '\'' +
                ", type='" + type + '\'' +
                ", src='" + src + '\'' +
                ", orderBy=" + orderBy +
                ", authorityCode='" + authorityCode + '\'' +
                ", groupName='" + groupName + '\'' +
                ", editable=" + editable +
                ", disabled=" + disabled +
                '}';
    }
}
